package yum;

public class Fbo {
    public static void main(String[] args) {
        int n=5;
        //求解第n项的值
        System.out.println("斐波那契:"+getF(5));
        System.out.println("-------------");
        System.out.println("斐波那契数:"+fbnq(5));
    }

    /**
     * 斐波那契数列
     * @param n 第n项
     * @return 第n项的值
     */
    public static long getF(int n){
        //递归的结束条件:当n=1时返回，当n=2是返回2
        if(n==1){
            return 1;
        }
        if(n==2){
            return 2;
        }
        return getF(n-1)+getF(n-2);
        //自己调用自己
    }

    /**
     * 斐波那契非递归算法
     * @param n 第哪一项
     * @return 返回那一次的数值
     */
    public static long fbnq(int n) {
        long f0=1,f1=1,i=2,fn=0;
        if(n==1){return 1;}
        for (;i<=n;i++){
            fn=f0+f1;
            f0=f1;
            f1=fn;
            System.out.print(fn+" ");
        }
        System.out.println();
//        while(i<=n){
//            fn=f0+f1;
//            f0=f1;
//            f1=fn;
//            i++;
//        }
        return fn;
    }
}
